/**
 * 
 */
package test.temp.suanfa;

import org.junit.Test;

import com.alibaba.fastjson2.JSON;

import hyl.core.MyFun;

/**
 * @author 邹达有
 * @mail 37798955@qq.com
 * 
 *       2022年10月1日
 * 
 */
public class test {
	TApi api = new TApi();

	public void test_添加用户列表() {
		// 构建用户列表

		UserInfo.clearAll();
		UserInfo u = UserInfo.getUser(1, 0);
		u = UserInfo.getUser(2, 1);
		u = UserInfo.getUser(3, 1);
		u = UserInfo.getUser(21, 2);
		u = UserInfo.getUser(22, 2);
		u = UserInfo.getUser(23, 2);
		u = UserInfo.getUser(31, 3);
		u = UserInfo.getUser(32, 3);
		u = UserInfo.getUser(33, 3);
		u = UserInfo.getUser(221, 22);
		u = UserInfo.getUser(222, 22);
		u = UserInfo.getUser(223, 22);
		u = UserInfo.getUser(311, 31);
		u = UserInfo.getUser(312, 31);
		u = UserInfo.getUser(313, 31);
		u = UserInfo.getUser(321, 32);
		u = UserInfo.getUser(322, 32);
		u = UserInfo.getUser(323, 32);
		u = UserInfo.getUser(331, 33);
		u = UserInfo.getUser(332, 33);
		u = UserInfo.getUser(333, 33);

		// UserInfo._根节点.print();
//		UserInfo._根节点.showDown();
//		System.out.println();
//		UserInfo._根节点.showDown2();
//		System.out.println();
//		UserInfo.f预遍历();
//		UserInfo._根节点.f广度遍历向下((i,nd)->{
//			System.out.println(i + "广度遍历_向下 正 id=" + nd._id + ", 父id=" + nd._id父节点); 
//			return false;
//		});
//		UserInfo._根节点.f广度遍历向上((i, nd) -> {
//			System.out.println(i + "广度遍历_向上 正 id=" + nd._id + ", 父id=" + nd._id父节点);
//			return false;
//		});

		// UserInfo._根节点
		// User.show();
		// test_抢单();
		// ok

		// test_交易() ;
		// test_日结() ;
		// ok

		// test_打赏(); ok
		// test_空投();

	}

	void test_日结() {
		api.f300_商城_日结_初始化();
		api.f301_商城_日结_分红();
		api.f309_商城_日结_结尾();
	}

	//@Test
	public void test_抢单() {
		test_添加用户列表();
		System.out.println(D抢单角色.会员.ordinal());
		api.test001_抢单日结_初始化();
		// UserInfo.showAll();
		// 2 交易记录列表
		long 成本 = 1000 * D参.比例1e6;
		TApi.日抢单交易记录.clear();
		T抢单 qd1 = T抢单.get抢单(1, 10, MyFun.getNs() - 10000, 1, 成本, 2, T抢单.D已付款, T抢单.D可结算手续费, MyFun.getNs());
		System.out.println(JSON.toJSONString(qd1));
		TApi.日抢单交易记录.add(qd1);
		T抢单 qd = T抢单.get抢单(1, 11, MyFun.getNs() - 10000, 1, 成本, 3, T抢单.D已付款, T抢单.D可结算手续费, MyFun.getNs());
		TApi.日抢单交易记录.add(qd);
		qd = T抢单.get抢单(1, 12, MyFun.getNs() - 10000, 1, 成本, 3, T抢单.D已付款, T抢单.D可结算手续费, MyFun.getNs());
		TApi.日抢单交易记录.add(qd);

		qd1 = T抢单.get抢单(1, 111, MyFun.getNs() - 10000, 1, 成本, 31, T抢单.D已付款, T抢单.D可结算手续费, MyFun.getNs());
		TApi.日抢单交易记录.add(qd1);
		qd1 = T抢单.get抢单(1, 112, MyFun.getNs() - 10000, 1, 成本, 32, T抢单.D已付款, T抢单.D可结算手续费, MyFun.getNs());
		TApi.日抢单交易记录.add(qd1);
		qd1 = T抢单.get抢单(1, 113, MyFun.getNs() - 10000, 1, 成本, 33, T抢单.D已付款, T抢单.D可结算手续费, MyFun.getNs());
		TApi.日抢单交易记录.add(qd1);
		qd1 = T抢单.get抢单(1, 114, MyFun.getNs() - 10000, 1, 成本, 31, T抢单.D已付款, T抢单.D可结算手续费, MyFun.getNs());
		TApi.日抢单交易记录.add(qd1);
		qd1 = T抢单.get抢单(1, 115, MyFun.getNs() - 10000, 1, 成本, 32, T抢单.D已付款, T抢单.D可结算手续费, MyFun.getNs());
		TApi.日抢单交易记录.add(qd1);
		qd1 = T抢单.get抢单(1, 116, MyFun.getNs() - 10000, 1, 成本, 33, T抢单.D已付款, T抢单.D可结算手续费, MyFun.getNs());
		TApi.日抢单交易记录.add(qd1);

		qd = T抢单.get抢单(1, 121, MyFun.getNs() - 10000, 1, 成本, 311, T抢单.D已付款, T抢单.D可结算手续费, MyFun.getNs());
		TApi.日抢单交易记录.add(qd);
		qd = T抢单.get抢单(1, 122, MyFun.getNs() - 10000, 1, 成本, 312, T抢单.D已付款, T抢单.D可结算手续费, MyFun.getNs());
		TApi.日抢单交易记录.add(qd);
		qd = T抢单.get抢单(1, 123, MyFun.getNs() - 10000, 1, 成本, 313, T抢单.D已付款, T抢单.D可结算手续费, MyFun.getNs());
		TApi.日抢单交易记录.add(qd);
		qd = T抢单.get抢单(1, 124, MyFun.getNs() - 10000, 2, 成本, 311, T抢单.D已付款, T抢单.D可结算手续费, MyFun.getNs());
		TApi.日抢单交易记录.add(qd);
		qd = T抢单.get抢单(1, 125, MyFun.getNs() - 10000, 2, 成本, 312, T抢单.D已付款, T抢单.D可结算手续费, MyFun.getNs());
		TApi.日抢单交易记录.add(qd);
		qd = T抢单.get抢单(1, 126, MyFun.getNs() - 10000, 2, 成本, 313, T抢单.D已付款, T抢单.D可结算手续费, MyFun.getNs());
		TApi.日抢单交易记录.add(qd);

		qd = T抢单.get抢单(1, 141, MyFun.getNs() - 10000, 1, 成本, 321, T抢单.D已付款, T抢单.D可结算手续费, MyFun.getNs());
		TApi.日抢单交易记录.add(qd);
		qd = T抢单.get抢单(1, 142, MyFun.getNs() - 10000, 1, 成本, 322, T抢单.D已付款, T抢单.D可结算手续费, MyFun.getNs());
		TApi.日抢单交易记录.add(qd);
		qd = T抢单.get抢单(1, 143, MyFun.getNs() - 10000, 1, 成本, 323, T抢单.D已付款, T抢单.D可结算手续费, MyFun.getNs());
		TApi.日抢单交易记录.add(qd);
		qd = T抢单.get抢单(1, 144, MyFun.getNs() - 10000, 2, 成本, 321, T抢单.D已付款, T抢单.D可结算手续费, MyFun.getNs());
		TApi.日抢单交易记录.add(qd);
		qd = T抢单.get抢单(1, 145, MyFun.getNs() - 10000, 2, 成本, 322, T抢单.D已付款, T抢单.D可结算手续费, MyFun.getNs());
		TApi.日抢单交易记录.add(qd);
		qd = T抢单.get抢单(1, 146, MyFun.getNs() - 10000, 2, 成本, 323, T抢单.D已付款, T抢单.D可结算手续费, MyFun.getNs());
		TApi.日抢单交易记录.add(qd);

		qd = T抢单.get抢单(1, 151, MyFun.getNs() - 10000, 1, 成本, 331, T抢单.D已付款, T抢单.D可结算手续费, MyFun.getNs());
		TApi.日抢单交易记录.add(qd);
		qd = T抢单.get抢单(1, 152, MyFun.getNs() - 10000, 1, 成本, 332, T抢单.D已付款, T抢单.D可结算手续费, MyFun.getNs());
		TApi.日抢单交易记录.add(qd);
		qd = T抢单.get抢单(1, 153, MyFun.getNs() - 10000, 1, 成本, 333, T抢单.D已付款, T抢单.D可结算手续费, MyFun.getNs());
		TApi.日抢单交易记录.add(qd);
		qd = T抢单.get抢单(1, 154, MyFun.getNs() - 10000, 2, 成本, 331, T抢单.D已付款, T抢单.D可结算手续费, MyFun.getNs());
		TApi.日抢单交易记录.add(qd);
		qd = T抢单.get抢单(1, 155, MyFun.getNs() - 10000, 2, 成本, 332, T抢单.D已付款, T抢单.D可结算手续费, MyFun.getNs());
		TApi.日抢单交易记录.add(qd);
		qd = T抢单.get抢单(1, 156, MyFun.getNs() - 10000, 2, 成本, 333, T抢单.D已付款, T抢单.D可结算手续费, MyFun.getNs());
		TApi.日抢单交易记录.add(qd);

		api.f004_抢单日结_遍历抢单记录();
		// UserInfo.showAll();

		api.f005_抢单日结_计算抢单分红();

	}

	// @Test
	public void test_交易() {
		test_添加用户列表();
		TApi.日商城交易记录.clear();
		// 购买指定商品升级角色
		UserInfo.getUser(32).i商城角色 = 1;
		UserInfo.getUser(3).i商城角色 = 2;
		UserInfo.getUser(1).i商城角色 = 3;
		UserInfo.getUser(32).i分红级别 = UserInfo.D战区;
		UserInfo.getUser(3).i分红级别 = UserInfo.D战区;
		api.f商城交易100_送云值(new T交易(1, MyFun.getNs(), 3, 321, 2, 1000L * D参.比例1e6, 130L * D参.比例1e6, 1));
		api.f商城交易100_送云值(new T交易(2, MyFun.getNs(), 3, 322, 2, 1000L * D参.比例1e6, 130L * D参.比例1e6, 1));
		test_日结();

	}

	// @Test
	public void test_打赏() {
		test_添加用户列表();
		TApi.日打赏记录.clear();
		UserInfo.getUser(321).i系统角色 = 2;
		UserInfo.getUser(32).i商城角色 = 1;
		UserInfo.getUser(3).i商城角色 = 3;
		UserInfo.getUser(1).i商城角色 = 3;
		UserInfo.getUser(32).i分红级别 = UserInfo.D战区;
		UserInfo.getUser(3).i分红级别 = UserInfo.D战区;
		UserInfo.getUser(1).l累计到昨日云值 = 200 * D参.比例1e6;
		UserInfo.getUser(3).l累计到昨日云值 = 200 * D参.比例1e6;
		UserInfo.getUser(32).l累计到昨日云值 = 2000 * D参.比例1e6;
		TApi.日打赏记录.add(new T打赏(4, 321, 322, 1000 * D参.比例1e6, MyFun.getNs(), null));
		TApi.日打赏记录.add(new T打赏(5, 321, 323, 1000 * D参.比例1e6, MyFun.getNs(), null));
		for (T打赏 ds : TApi.日打赏记录) {
			api.f200_打赏仓金(ds);
		}
		test_日结();
	}

	// @Test
	public void test_空投() {
		test_添加用户列表();
		UserInfo u321 = UserInfo.getUser(321);
		u321.l日赠云值 = 100 * D参.比例1e6;
		u321.l日增业绩 = 100 * D参.比例1e6;
		UserInfo.getUser(321).l累计到昨日云值 = 2000 * D参.比例1e6;
		UserInfo.getUser(321).i分红级别 = UserInfo.D运营中心;
		api.f300_商城_日结_初始化();
		// UserInfo.getUser(321).i系统角色=2;
		// UserInfo.getUser(321).i分红级别= UserInfo.D运营中心;
		api.f400_商城_日结_定时空投仓金();
	}

	@Test
	public void test_释放() {
		test_添加用户列表();
		UserInfo u321 = UserInfo.getUser(321);
		u321.l质押账户=900* D参.比例1e6;
		u321.i当日抢单次数=2;
		T释放 sf = new T释放(MyFun.getMs(), u321, 1000 * D参.比例1e6, "");
		sf.f释放(MyFun.getMs());

	}

}
